function Person() {
  // let obj = {}//先创建空对象

  // Person.call(obj)//然后用call将Person中的this绑定在obj身上

  // 将值赋给obj//依次执行Person中的赋值，将值赋予obj

  //obj.__proto__ = Person.prototype//让obj的隐式原型等于构造函数的显式原型

  //return前还要判断Person()的值，如果是引用类型，则采用。否则return obj
  //return Person() instanceof 'object' ? Person() : obj //返回obj 

  //以上五步才是new的完整步骤



  this.name = '阿伟'
  this.age = 18

  // return 123//不采纳，基础类型
  // return []//采纳，引用类型
}
let p = new Person()
console.log(p);
